﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CDStore3Tiers;
using DevComponents.DotNetBar;
//using CuaHangDiaNhac.Xuly;

namespace CuaHangDiaNhac
{
	public partial class frmDiaNhac : DevComponents.DotNetBar.Office2007Form
	{
		log4net.ILog log = log4net.LogManager.GetLogger("Đĩa nhạc");
		public static bool checkDH = false;
		StoreCDDataContext dt;
		int mask;
		List<vwDiaNhacBan> ListDia = new List<vwDiaNhacBan>();
		public static bool da_mua = false;
		frmInDiaNhac indianhac;
		frmInDiaNhacBaiHat indianhacbaihat;
		//frmDanhSachBaiHat_DiaNhac bhdn;
		frmDSBaiHatDiaNhac bhdn;
		XuLyDiaNhac XLDN = new XuLyDiaNhac();
		DataGridViewTextBoxColumn coMaDia;
		DataGridViewTextBoxColumn coTenDia;
		DataGridViewTextBoxColumn coTenLoai;
		DataGridViewTextBoxColumn coSoLuong;
		DataGridViewTextBoxColumn coDonGiaNhap;
		DataGridViewTextBoxColumn coDonGiaBan;
		DataGridViewComboBoxColumn coNhaCungCap;
		DataGridViewTextBoxColumn coLoaiDia;
		DataGridViewTextBoxColumn coNgayNhap;
		List<vwDiaNhac> list;
        int PagingNumber = 0;
        int PagingSize = 25;
		public void lockLogin()
		{
			string id = frmLogin.id;
			XLPhanQuyen phanquyen = new XLPhanQuyen();
			List<TaiKhoanChucNang> tkcn = new List<TaiKhoanChucNang>();
			tkcn = phanquyen.TKChucNang(frmLogin.id);


			if (phanquyen.CoQuyen(id, 201))
			{
				btnThemDN.Enabled = true;
				InsertDiaNhac.Visible = true;
			}
			if (phanquyen.CoQuyen(id, 202))
			{
				btnXoaEX.Visible = true;
				btnXoadt.Enabled = true;
			}
			if (phanquyen.CoQuyen(id, 203))
			{
				LuuDuLieu.Enabled = true;
			}
			if (phanquyen.CoQuyen(id, 204))
			{
				btnGioHang.Enabled = true;
				bttThemDSĐN.Visible = true;
				btnMua.Enabled = true;
				btnXoa2.Enabled = true;
			}
			if (phanquyen.CoQuyen(id, 205))
			{
				tsThemSK.Visible = true;
			}
		}

		public void closeall()
		{
			btnXoadt.Enabled = false;
			btnThemDN.Enabled = false;
			LuuDuLieu.Enabled = false;
			btnGioHang.Enabled = false;
			//btnThem1.Enabled = false;
			//btnXoa.Enabled = false;
			btnCapNhat.Enabled = false;
			btnMua.Enabled = false;
			//btnXoa.Enabled = false;
			InsertDiaNhac.Visible = false;
			btnXoaEX.Visible = false;
			tsThemSK.Visible = false;
			bttThemDSĐN.Visible = false;
		}

		public frmDiaNhac()
		{
			InitializeComponent();
			dt = new StoreCDDataContext();
			dt.Connection.ConnectionString = getConfig.getConnection();
			dt = new StoreCDDataContext();
			list = dt.vwDiaNhacs.ToList<vwDiaNhac>();
		}
		public void frmDiaNhac_Load(object sender, EventArgs e)
		{
			closeall();
			lockLogin();
			dt = new StoreCDDataContext();
			dt.Connection.ConnectionString = getConfig.getConnection();
            bindingNavigatorEx1.BackColor = Color.FromArgb(255,255,255);
			lblThongBao.Text = "";
			cbLoaiDia.DataSource = dt.LoaiDia_SelectAll();
			cbLoaiDia.DisplayMember = "TenLoai";
			cbLoaiDia.ValueMember = "MaLoai";
			cbNhaCungCap.DataSource = dt.NhaCungCap_SelectAll();
			cbNhaCungCap.DisplayMember = "TenNCC";
			cbNhaCungCap.ValueMember = "MaNCC";
			lblThongBao.Text = "";
			lblThongbao2.Text = "";
			//NhaCungCap.DataSource = dt.NhaCungCap_SelectAll();
			//NhaCungCap.DisplayMember = "TenNCC";
			//NhaCungCap.ValueMember = "MaNCC";
			GetAll();
            btnBackBH.Visible = false;
			dtiFrom.Value = DateTime.Now;
			dtiTo.Value = DateTime.Now;
			log.Info(frmLogin.id + ": đã load lên form đĩa nhạc");
			//  btnDatHang.Enabled = btnMua.Enabled = btnXoa2.Enabled = false;
		}
		void GetAll()
		{
			dgrDanhSach.DataSource = null;
			Showthem(true);
			coMaDia = new DataGridViewTextBoxColumn();
			coMaDia.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coMaDia.DataPropertyName = "MaDia";
			coMaDia.HeaderText = "Mã Đĩa";
			coMaDia.Name = "MaDia";
            coMaDia.ReadOnly = true;
			dgrDanhSach.Columns.Add(coMaDia);
			coTenDia = new DataGridViewTextBoxColumn();
			coTenDia.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coTenDia.DataPropertyName = "TenDia";
			coTenDia.HeaderText = "Tên Đĩa";
			coTenDia.Name = "TenDia";
			dgrDanhSach.Columns.Add(coTenDia);
			tongsoluong = new DataGridViewTextBoxColumn();
			tongsoluong.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			tongsoluong.DataPropertyName = "tongsoluong";
			tongsoluong.HeaderText = "Tên Số Lượng Đĩa Đã Bán";
			tongsoluong.Name = "tongsoluong";
			tongsoluong.Visible = false;
			dgrDanhSach.Columns.Add(tongsoluong);
			coTenLoai = new DataGridViewTextBoxColumn();
			coTenLoai.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coTenLoai.DataPropertyName = "TenLoai";
			coTenLoai.HeaderText = "Tên Loại";
			coTenLoai.Name = "TenLoai";
			dgrDanhSach.Columns.Add(coTenLoai);
			DataGridViewTextBoxColumn coNCC = new DataGridViewTextBoxColumn();
			coNCC.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coNCC.DataPropertyName = "NhaCungCap";
			coNCC.Visible = false;
			coSoLuong = new DataGridViewTextBoxColumn();
			coSoLuong.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coSoLuong.DataPropertyName = "SoLuongDia";
			coSoLuong.HeaderText = "Số Lượng";
			coSoLuong.Name = "SoLuongDia";
			dgrDanhSach.Columns.Add(coSoLuong);
			coDonGiaNhap = new DataGridViewTextBoxColumn();
			coDonGiaNhap.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coDonGiaNhap.DataPropertyName = "DonGiaNhap";
			coDonGiaNhap.HeaderText = "Đơn Giá Nhập";
			coDonGiaNhap.Name = "DonGiaNhap";
			dgrDanhSach.Columns.Add(coDonGiaNhap);
			coDonGiaBan = new DataGridViewTextBoxColumn();
			coDonGiaBan.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coDonGiaBan.DataPropertyName = "DonGiaBan";
			coDonGiaBan.HeaderText = "Đơn Giá Bán";
			coDonGiaBan.Name = "DonGiaBan";
			dgrDanhSach.Columns.Add(coDonGiaBan);
			coNhaCungCap = new DataGridViewComboBoxColumn();
			coNhaCungCap.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coNhaCungCap.DataPropertyName = "NhaCungCap";
			coNhaCungCap.HeaderText = "Nhà Cung Cấp";
			coNhaCungCap.Name = "NhaCungCap";
			coNhaCungCap.DataSource = dt.NhaCungCap_SelectAll();
			coNhaCungCap.DisplayMember = "TenNCC";
			coNhaCungCap.ValueMember = "MaNCC";
			dgrDanhSach.Columns.Add(coNhaCungCap);
			coLoaiDia = new DataGridViewTextBoxColumn();
			coLoaiDia.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coLoaiDia.DataPropertyName = "LoaiDia";
			coLoaiDia.HeaderText = "Loại Đĩa";
			coLoaiDia.Name = "LoaiDia";
			coLoaiDia.Visible = false;
			dgrDanhSach.Columns.Add(coLoaiDia);
			coNgayNhap = new DataGridViewTextBoxColumn();
			coNgayNhap.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
			coNgayNhap.DataPropertyName = "NgapNhapHang";
			coNgayNhap.HeaderText = "Ngày Nhập Hàng";
			coNgayNhap.Name = "NgapNhapHang";
			dgrDanhSach.Columns.Add(coNgayNhap);
			var diaNhac = dt.DiaNhac_SelectAllExNCC();
			BindingSource bds = new BindingSource();
            bds.DataSource = diaNhac.Skip(PagingNumber).Take(PagingSize);
			bindingNavigatorEx1.BindingSource = bds;
			dgrDanhSach.DataSource = bds;
            lbPageTotal.Text = (XLDN.TongSoTrang(PagingSize)).ToString();
            txtPage.Text = "";
            txtPage.WatermarkText = (XLDN.SoTrangHienTai(PagingNumber, PagingSize)).ToString();
		}
		private void btnThem_Click(object sender, EventArgs e)
		{
			if (BatLoi.TextBoxEmpty(txtTenDia)
			   || BatLoi.ComboEmpty(cbNhaCungCap)
			   || BatLoi.ComboEmpty(cbLoaiDia))
			{
				BatLoi.ThongBao("Vui lòng xem lại các trường dữ liệu");
				return;
			}
			if (BatLoi.BatloiGia(txtGiaNhap.Text, txtGiaBan.Text))
				return;
			if (BatLoi.BatloiNgayNhap(dttNgayNhap.Value))
				return;
			if (TonTai(txtTenDia.Text))
			{
				lblThongBao.Text = "Tên đĩa đã tồn tại.";
				return;
			}
			if (ConvertType.ToInt(txtGiaBan.Text) < ConvertType.ToInt(txtGiaNhap.Text))
			{
				lblThongbao2.Text = "Đơn Gía Bán không hợp lệ";
				return;
			}
			XuLyDiaNhac.ThemDiaNhac(txtTenDia.Text, Convert.ToInt32(cbLoaiDia.SelectedValue), Convert.ToInt32(txtSoLuong.Text), Convert.ToInt32(cbNhaCungCap.SelectedValue), Convert.ToDecimal(txtGiaNhap.Text), Convert.ToDecimal(txtGiaBan.Text), dttNgayNhap.Value);
			dt.SubmitChanges();
            MessageBox.Show("Thêm đĩa nhạc thành công.");
			log.Info(frmLogin.id + ": đã thêm đĩa nhạc " + txtTenDia.Text);
			GetAll();
		}
		public void InsertDTB()
		{
			dt.DiaNhac_Insert(txtTenDia.Text, Convert.ToInt32(cbLoaiDia.SelectedValue), Convert.ToInt32(txtSoLuong.Text), Convert.ToInt32(cbNhaCungCap.SelectedValue), Convert.ToDecimal(txtGiaNhap.Text), Convert.ToDecimal(txtGiaBan.Text), dttNgayNhap.Value);
			dt.SubmitChanges();
			GetAll();
		}
		private void btnCapNhat_Click(object sender, EventArgs e)
		{
			if (dgrDanhSach.SelectedRows.Count < 1)
				DevComponents.DotNetBar.MessageBoxEx.Show("Xin Vui Lòng Chọn Nội dung cần Sửa");
			else
			{
				int madia = Convert.ToInt32(txtMaDia.Text);
				string tendia = txtTenDia.Text;
				int loaidia = Convert.ToInt32(cbLoaiDia.SelectedValue);
				int soluong = Convert.ToInt32(txtSoLuong.Text);
				int NhaCC = Convert.ToInt32(cbNhaCungCap.SelectedValue);
				decimal gianhap = Convert.ToDecimal(txtGiaNhap.Text);
				decimal giaban = Convert.ToDecimal(txtGiaBan.Text);
				DateTime ngaynhap = dttNgayNhap.Value;
				if ((soluong >= 0) && ((giaban >= gianhap)) && (ngaynhap <= DateTime.Now))
				{
					dt.DiaNhac_Update(madia, tendia, loaidia, soluong, NhaCC, gianhap, giaban, ngaynhap);
					log.Info(frmLogin.id + ": đã cập nhật lại đĩa nhạc " + tendia);
				}
				else
				{
					if (soluong < 0)
						MessageBox.Show("so luong dia cap nhat phai duong ");
					else
					{
						if (giaban < gianhap)
						{
							MessageBox.Show("gia ban phai lon hon gia nhap");
						}
						else if (ngaynhap > DateTime.Now)
							MessageBox.Show("ngay nhap phai truoc ngay hien tai");
					}
				}

				GetAll();
			}
		}
		private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
		{
			int a = Convert.ToInt32(dgrDanhSach.CurrentRow.Cells[0].Value.ToString());
			XuLyDiaNhac.XoaDiaNhac(a);
			GetAll();
			string tendia = XLDN.TenDN(a);
			log.Info(frmLogin.id + ": đã xóa đĩa nhạc " + tendia);
		}
		private void btnDelete_Click(object sender, EventArgs e)
		{
			int ok = 0;
			string error = "Xóa Thất bại! Những đĩa nhạc sau đã nằm trong đơn đặt hàng hoặc hóa đơn nào đó";
			DialogResult accept = DevComponents.DotNetBar.MessageBoxEx.Show("Xoá những đĩa nhạc được chọn? ", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
			if (accept == DialogResult.Yes)
			{
                for (int i = 0; i < dgrDanhSach.SelectedRows.Count; i++)
				{
					int a = Convert.ToInt32(dgrDanhSach.SelectedRows[i].Cells["MaDia"].Value.ToString());
					string tendia = XLDN.TenDN(a);
					try
					{
                        tendia = XLDN.TenDN(a);
						XuLyDiaNhac.XoaDiaNhac(a);						
						log.Info(frmLogin.id + ": đã xóa đĩa nhạc " + tendia);

					}
					catch (Exception)
					{
						ok = 1;
						error += "\n--" + tendia;
						log.Error(frmLogin.id + ": xóa đĩa nhạc " + tendia + " thất bại");
					}
                   
				}
               

			}
            else { ;}
            if (ok == 1)
            {
                DevComponents.DotNetBar.MessageBoxEx.Show(error);
            }
            else
            {
                DevComponents.DotNetBar.MessageBoxEx.Show("Xóa thành công");
            }
			Showthem(false);
			hang = null;
			GetAll();
		}
		void Showthem(bool them)
		{
			if (them)
			{
				hang = null;
				GetData();
			}
			btnXoa.Enabled = btnCapNhat.Enabled = !them;
			btnThem1.Enabled = them;
		}
		private void dataGridViewX1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			hang = dgrDanhSach.CurrentRow;
			GetData();
			Showthem(false);
		}
		private void btnCapNhat_Click_1(object sender, EventArgs e)
		{
			if (BatLoi.TextBoxEmpty(txtTenDia)
				|| BatLoi.ComboEmpty(cbNhaCungCap)
				|| BatLoi.ComboEmpty(cbLoaiDia))
			{
				BatLoi.ThongBao("Vui lòng xem lại các trường dữ liệu");
				return;
			}
			if (dgrDanhSach.SelectedRows.Count < 1)
				DevComponents.DotNetBar.MessageBoxEx.Show("Xin Vui Lòng Chọn Nội dung cần Sửa");
			else
			{
				XuLyDiaNhac.CapNhatDiaNhac(Convert.ToInt32(txtMaDia.Text), txtTenDia.Text, Convert.ToInt32(cbLoaiDia.SelectedValue), Convert.ToInt32(txtSoLuong.Text), Convert.ToInt32(cbNhaCungCap.SelectedValue), Convert.ToDecimal(txtGiaNhap.Text), Convert.ToDecimal(txtGiaBan.Text), dttNgayNhap.Value);
				log.Info(frmLogin.id + ": đã cập nhật lại đĩa nhạc " + txtTenDia.Text);
				GetAll();
			}

		}

		private void btnTimKiem_Click(object sender, EventArgs e)
		{
			//            if (cbChoose.SelectedIndex == 0)
			//                dgrDanhSach.DataSource = XuLyDiaNhac.LayDia_Ma(Convert.ToInt32( txtSearch.Text));
			//            else
			//                dgrDanhSach.DataSource = XuLyDiaNhac.LayDia_Ten(txtSearch.Text);
			if (cbChoose.SelectedIndex == 0)
			{
				dgrDanhSach.DataSource = XuLyDiaNhac.DanhSachDia_Ma(Convert.ToInt32(txtSearch.Text));
			}
			else
				dgrDanhSach.DataSource = XuLyDiaNhac.DanhSachDia_Ten(txtSearch.Text);
		}
		DataGridViewRow hang;
		bool TonTai(String s)
		{
			return (from d in dt.vwDiaNhacs
					where d.TenDia == s
					select d).Count() > 0;
		}
		void GetData()
		{
			try
			{
				if (hang != null)
				{
					lblThongBao.Text = "";
					txtMaDia.Text = ConvertType.ToString(hang.Cells["MaDia"].Value);
					txtTenDia.Text = hang.Cells["TenDia"].Value.ToString();
					cbLoaiDia.SelectedValue = hang.Cells["LoaiDia"].Value;
					txtSoLuong.Text = hang.Cells["SoLuongDia"].Value.ToString();
					cbNhaCungCap.SelectedValue = hang.Cells["NhaCungCap"].Value;
					txtGiaNhap.Text = hang.Cells["DonGiaNhap"].Value.ToString();
					txtGiaBan.Text = hang.Cells["DonGiaBan"].Value.ToString();
					dttNgayNhap.Value = Convert.ToDateTime(hang.Cells["NgapNhapHang"].Value);
				}
				else
				{
					txtTenDia.Text = "";
					cbLoaiDia.SelectedValue = "";
					txtSoLuong.Text = "0";
					cbNhaCungCap.SelectedValue = "";
					txtGiaNhap.Text = "0";
					txtGiaBan.Text = "0";
					dttNgayNhap.Value = DateTime.Now;
				}
			}
			catch (Exception)
			{
				hang = null;
				GetData();
			}
		}
		private void btnCancel_Click(object sender, EventArgs e)
		{
			GetData();
		}
		private void btnThemMoi_Click(object sender, EventArgs e)
		{
			if (!expandablePanel1.Expanded || !expandablePanel2.Expanded)
			{
				expandablePanel1.Expanded = true;
				expandablePanel2.Expanded = true;
				expandablePanel3.Expanded = false;
			}
			hang = null;
			GetData();
			Showthem(true);
		}
		private void btnTim_Click(object sender, EventArgs e)
		{
			if (cbChoose.SelectedIndex == 0)
				dgrDanhSach.DataSource = XuLyDiaNhac.LayDia_Ma(Convert.ToInt32(txtSearch.Text));
			else
				dgrDanhSach.DataSource = XuLyDiaNhac.LayDia_Ten(txtSearch.Text.Trim());
		}
		private void btnDSDia_Click(object sender, EventArgs e)
		{
			GetAll();
		}
		private void txtSearch_TextChanged(object sender, EventArgs e)
		{
			dgrDanhSach.DataSource = XuLyDiaNhac.DanhSachDia_Tim(list, txtSearch.Text);
		}
		private void InsertDiaNhac_Click(object sender, EventArgs e)
		{
			if (!expandablePanel1.Expanded || !expandablePanel2.Expanded)
			{
				expandablePanel1.Expanded = true;
				expandablePanel2.Expanded = true;
			}
			hang = null;
			GetData();
			Showthem(true);
			log.Info(frmLogin.id + ": đã chọn chức năng thêm đĩa nhạc");
		}
		private void dgrDanhSach_MouseDown(object sender, MouseEventArgs e)
		{
			DataGridView.HitTestInfo hit;
			hit = dgrDanhSach.HitTest(e.X, e.Y);

			//đối tượng cho biết thông tin hit trên datagridview
			if (e.Button == MouseButtons.Right)
			{ //bắt sự kiện chuột phải
				//tạo đối tượng HTi
				if (hit.Type == DataGridViewHitTestType.Cell)
				{//Kiểm tra xem đối tượng HTi có đúng là kiểu Cell không
					if (!((DataGridViewRow)(dgrDanhSach.Rows[hit.RowIndex])).Selected)
					{//kiểm tra xem row tại vị trí chuột có đúng là chưa chọn
						dgrDanhSach.ClearSelection();//xóa chọn tất cả trên datagrid
						((DataGridViewRow)dgrDanhSach.Rows[hit.RowIndex]).Selected = true;//xác lập chọn cho row tại vị trí nhấn chuột                      
					}
				}
			}
            if (dgrDanhSach.SelectedRows.Count > 1)
                LockContextMenu(false);
            else
                LockContextMenu(true);
		}

        private void LockContextMenu(bool p)
        {
            btnDSBH.Enabled = p;
            btnInBaiHatDiaNhac.Enabled = p;
           // btnInDSDN.Enabled = p;
        }
		private void buttonItem6_Click(object sender, EventArgs e)
		{
			GetAll();
		}

		private void dgrDanhSach_SelectionChanged(object sender, EventArgs e)
		{

			GetData();
		}
		private void dgrDanhSach_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			Showthem(false);
			hang = dgrDanhSach.CurrentRow;
			GetData();
		}
		private void btnChiTiet_Click(object sender, EventArgs e)
		{
			if (dgrDanhSach.SelectedRows.Count > 0)
			{
				foreach (DataGridViewRow r in dgrDanhSach.SelectedRows)
				{
					int maso = Convert.ToInt32(r.Cells["MaDia"].Value.ToString());
					string tendia = XLDN.TenDN(maso);
					bhdn = new frmDSBaiHatDiaNhac(maso);					
					log.Info(frmLogin.id + ": đã chọn chức năng xem danh sách bài hát của đĩa nhạc " + tendia);
                    bhdn.ShowDialog(this);
				}
			}
		}
		private void LuuDuLieu_Click(object sender, EventArgs e)
		{
			XuLyDiaNhac xldn = new XuLyDiaNhac();
			xldn.LuuDuLieu(dgrDanhSach);
			log.Info(frmLogin.id + ": đã lưu các dữ liệu thay đổi");
		}
		public List<vwDiaNhacBan> Mua = new List<vwDiaNhacBan>();
		bool kiemtra(int i)
		{
			bool kq = true;
			for (int j = 0; j < dgrListGioHang.Rows.Count; j++)
			{
				if (ConvertType.ToInt(dgrListGioHang.Rows[j].Cells[0].Value) == i)
					kq = false;
			}
			return kq;
		}
		void AddToGioHang()
		{
			for (int i = 0; i < dgrDanhSach.SelectedRows.Count; i++)
			{
				try
				{
					int madia = ConvertType.ToInt(dgrDanhSach.SelectedRows[i].Cells["MaDia"].Value);
					if (kiemtra(madia))
					{
						DiaNhac dn = XuLyDiaNhac.LayDia_Ma(madia);
						if (dn.SoLuongDia <= 0)
							MessageBox.Show("Dia nhac " + dn.TenDia + "Het dia roi.");
						else
						{
							dgrListGioHang.Rows.Add(dn.MaDia, dn.TenDia, 1, dn.DonGiaBan);
							log.Info(frmLogin.id + ": đã thêm đĩa nhạc " + dn.TenDia + " vào giỏ hàng");
						}
					}
					else
					{
						string tendia = XLDN.TenDN(madia);
						MessageBox.Show("Đã tồn tại đĩa nhạc " + tendia + " trong giỏ hàng");
					}
				}
				catch (Exception)
				{
				}
			}
		}
		private void btnGioHang_Click(object sender, EventArgs e)
		{
			if (da_mua)
			{
				dgrListGioHang.Rows.Clear();
			}
			da_mua = false;
			checkDH = false;
			// btnDatHang.Enabled = btnMua.Enabled = btnXoa2.Enabled = true;
			expandablePanel1.Expanded = true;
			expandablePanel3.Expanded = true;
			expandablePanel2.Expanded = false;
			AddToGioHang();
			log.Info(frmLogin.id + ": đã chọn chức năng giỏ hàng");
		}
		int soluongdia(int a)
		{
			DiaNhac l = XuLyDiaNhac.LayDia_Ma(a);
			return l.SoLuongDia;
		}
		public void UpdateSoLuong()
		{
			dt.SubmitChanges();
		}
		private void btnXoa2_Click(object sender, EventArgs e)
		{
			for (int i = 0; i < dgrListGioHang.SelectedRows.Count; i++)
			{
				try
				{
					dgrListGioHang.Rows.Remove(dgrListGioHang.SelectedRows[i]);
					string tendia = dgrListGioHang.SelectedRows[i].Cells["TenDia1"].Value.ToString();
					log.Info(frmLogin.id + ": đã xóa đĩa nhạc " + tendia + " ra khỏi giỏ hàng");
				}
				catch (Exception)
				{
				}
			}
			Showthem(false);
			hang = null;
		}
		private void btnMua_Click(object sender, EventArgs e)
		{  //da_mua = true;
			frmMain frm = MdiParent as frmMain;
			XuLyHoaDon.ThemMoiHoaDon("", DateTime.Now, frmLogin.id);
			XuLyHoaDon xl = new XuLyHoaDon();
			int mahoadon = xl.LayMaHoaDon();
			int a = xl.LayMaHoaDon();
			string s = xl.LayNoiDungHD();
			DateTime day = xl.LayNgayLapHD();
			try
			{
				ListDia = frm.fDiaNhac.ThemCTHD();
			}
			catch (Exception)
			{
				MessageBox.Show("Chua có dia nào trong gio hàng");
				return;
			}
			SuKien sk = XuLyDiaNhac.KiemTraNgay_SuKien(day);
			decimal t = 0;
			if (sk.MaSK != 0)
			{
				for (int i = 0; i < ListDia.Count; i++)
				{
					if (ListDia[i].SoLuongDia <= 0)
					{
						MessageBox.Show("so luong dia phai lon hon 0");
						dt.HoaDonBan_Delete(a);
						return;
					}
					else
					{
						int j = ConvertType.ToInt(ListDia[i].MaDia);
						int slbandau = XuLyDiaNhac.LaySoLuong_Ma(j);
						t = ConvertType.ToDecimal(ListDia[i].DonGiaBan * ListDia[i].SoLuongDia);
						if (XuLyDiaNhac.KiemTraMaDia_GiamGia(j, sk.MaSK))
						{
							t = ((ConvertType.ToDecimal(ListDia[i].DonGiaBan) -
								 (ConvertType.ToDecimal(ListDia[i].DonGiaBan * sk.GiamGia / 100))) * ListDia[i].SoLuongDia);
							XuLyChiTietHoaDon.ThemChiTietHoaDon(a, j, ListDia[i].SoLuongDia, ConvertType.ToDecimal(ListDia[i].DonGiaBan), sk.MaSK, t);
							XuLyDiaNhac.CapNhatSoLuong(j, slbandau, ListDia[i].SoLuongDia);
						}
						else
						{
							XuLyChiTietHoaDon.ThemChiTietHoaDon(a, j, ListDia[i].SoLuongDia, ConvertType.ToDecimal(ListDia[i].DonGiaBan), t);
							XuLyDiaNhac.CapNhatSoLuong(j, slbandau, ListDia[i].SoLuongDia);
						}
						dt.SubmitChanges();
						log.Info(frmLogin.id + ": tạo hóa đơn từ giỏ hàng");
					}
				}
			}
			else
			{
				for (int i = 0; i < ListDia.Count; i++)
				{
					if (ListDia[i].SoLuongDia <= 0)
					{
						MessageBox.Show("so luong dia phai lon hon 0");
						dt.HoaDonBan_Delete(a);
						return;
					}
					else
					{
						int j = ConvertType.ToInt(ListDia[i].MaDia);
						int slbandau = XuLyDiaNhac.LaySoLuong_Ma(j);
						t = ConvertType.ToDecimal(ListDia[i].DonGiaBan * ListDia[i].SoLuongDia);
						XuLyChiTietHoaDon.ThemChiTietHoaDon(a, j, ListDia[i].SoLuongDia, ConvertType.ToDecimal(ListDia[i].DonGiaBan), t);
						XuLyDiaNhac.CapNhatSoLuong(j, slbandau, ListDia[i].SoLuongDia);
						dt.SubmitChanges();
					}
				}
			}
			CDStore3Tiers.XuLyHoaDon.UpdateTTHoaDon(a, s, day);
			frm.btnChiTietHoaDon_Click(mahoadon, e);
		}
		private void tsThemSK_Click(object sender, EventArgs e)
		{
			XLSuKien sk = new XLSuKien();
			frmMain main = new frmMain();
			DateTime day = DateTime.Parse(System.DateTime.Now.ToShortDateString());
			int mask = sk.KiemTraThoiGian(day);
			if (mask == 0)
			{
				DialogResult accept = DevComponents.DotNetBar.MessageBoxEx.Show("Chưa có sự kiện nào phù hợp. Bạn có muốn tạo mới? ", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
				if (accept == DialogResult.Yes)
				{
					main.btnSuKien_Click(sender, e);
				}
				return;
			}
			else
			{
				for (int i = 0; i < dgrDanhSach.SelectedRows.Count; i++)
				{
					int selector = ConvertType.ToInt(dgrDanhSach.SelectedRows[i].Cells["MaDia"].Value);
					if (sk.khongtrunglap(mask, selector))
					{
						dt.DSGiamGia_Insert(mask, selector);
						string tendia = XLDN.TenDN(selector);
						log.Info(frmLogin.id + ": đã thêm đĩa nhạc " + tendia + " vào sự kiện hiện mã số [" + mask + "]");
					}
					else
					{
						DevComponents.DotNetBar.MessageBoxEx.Show("Bạn đã thêm đĩa nhạc có mã " + selector + " vào sự kiện từ trước!");
					}
				}
			}
		}
		private void btnKTSuKien_Click(object sender, EventArgs e)
		{
			XLSuKien sk = new XLSuKien();
			frmMain main = new frmMain();
			DateTime day = DateTime.Parse(System.DateTime.Now.ToShortDateString());
			int mask = sk.KiemTraThoiGian(day);
			if (mask != 0)
			{
				frmDSGiamGia fGG = new frmDSGiamGia(mask);
				fGG.StartPosition = FormStartPosition.CenterParent;
				fGG.ShowDialog();
				log.Info(frmLogin.id + ": đã chọn chức năng xem danh sách giảm giá");
			}
			else
				DevComponents.DotNetBar.MessageBoxEx.Show("Cửa hàng hiện chưa tổ chức sự kiện!");
		}
		public List<vwDiaNhacBan> ThemCTHD()
		{
			List<vwDiaNhacBan> kq = new List<vwDiaNhacBan>();
			for (int i = 0; i < dgrListGioHang.Rows.Count; i++)
			{
				vwDiaNhacBan dn = new vwDiaNhacBan();
				dn.MaDia = ConvertType.ToInt(dgrListGioHang.Rows[i].Cells["MaDia1"].Value);
				dn.TenDia = ConvertType.ToString(dgrListGioHang.Rows[i].Cells["TenDia1"].Value);
				dn.SoLuongDia = ConvertType.ToInt(dgrListGioHang.Rows[i].Cells["SoLuongMua"].Value);
				dn.DonGiaBan = ConvertType.ToDecimal(dgrListGioHang.Rows[i].Cells["DonGiaBan1"].Value);
				kq.Add(dn);
			}
			return kq;
		}
		public void btnTKho_Click(object sender, EventArgs e)
		{
			dgrDanhSach.DataSource = dt.DiaNhac_SelectTKho();
            btnTonKho.Visible = false;
            btnBackBH.Visible = true;
			log.Info(frmLogin.id + ": đã chọn chức năng xem danh sách đĩa nhạc tồn kho");
		}
		private void btnBack_Click(object sender, EventArgs e)
		{
			btnDSDia_Click(sender, e);
            btnTonKho.Visible = true;
            btnBackBH.Visible = false;
			log.Info(frmLogin.id + ": đã chọn chức năng quay lại danh sách đĩa nhạc");
		}
		frmQuanLyHoaDon qlhd = new frmQuanLyHoaDon();
		private void btnDatHang_Click(object sender, EventArgs e)
		{
			frmMain frm = MdiParent as frmMain;
			int maso = XuLyDataGridView.GetInt(qlhd.dgrDanhSach.CurrentRow, "MaDH");
			frm.bttDatHang_Click(sender, e);
			checkDH = true;
		}

		private void btnLayDSDNHot_Click(object sender, EventArgs e)
		{
			tongsoluong.Visible = true;
			if (cbKhoangTime.Checked == true)
			{
				dgrDanhSach.DataSource = dt.DiaNhacBanChay_Select(dtiFrom.Value, dtiTo.Value.AddDays(1));
				log.Info(frmLogin.id + ": đã chọn chức năng xem danh sách đĩa nhạc bán chạy từ ngày "
					+ dtiFrom.Value.ToShortDateString() + " tới ngày " + dtiTo.Value.ToShortDateString());
			}
			else
			{
				dgrDanhSach.DataSource = dt.DiaNhacBanChay_Select(dtiFrom.Value, dtiFrom.Value.AddDays(1));
				log.Info(frmLogin.id + ": đã chọn chức năng xem danh sách đĩa nhạc bán chạy trong ngày "
					+ dtiFrom.Value.ToShortDateString());
			}

		}


		private void expandablePanel4_ExpandedChanged(object sender, DevComponents.DotNetBar.ExpandedChangeEventArgs e)
		{
			if (cbKhoangTime.Checked == true)
			{
				lbFrom.Text = "Từ Ngày: ";
				lbTo.Visible = true;
				dtiTo.Visible = true;
			}
			else
			{
				lbFrom.Text = "Trong Ngày: ";
				lbTo.Visible = false;
				dtiTo.Visible = false;
			}
		}

		private void btnInDSDN_Click(object sender, EventArgs e)
		{
			indianhac = new frmInDiaNhac();
			indianhac.ShowDialog();
			log.Info(frmLogin.id + ": đã chọn chức năng in danh sách đĩa nhạc");
		}

		private void btnInBHDN_Click(object sender, EventArgs e)
		{
			int madia = 0;
			if (dgrDanhSach.SelectedRows.Count > 0)
			{
				foreach (DataGridViewRow r in dgrDanhSach.SelectedRows)
				{
					madia = Convert.ToInt32(r.Cells["MaDia"].Value.ToString());
					indianhacbaihat = new frmInDiaNhacBaiHat(madia);
				}
			}
			string tendia = XLDN.TenDN(madia);
			indianhacbaihat.ShowDialog(this);
			log.Info(frmLogin.id + ": đã chọn chức năng in ra danh sách bài hát có trong đĩa nhạc " + tendia);
		}

        private void txtTimKiem_TextChanged(object sender, EventArgs e)
        {
            dgrDanhSach.DataSource = XuLyDiaNhac.DanhSachDia_Tim(list, txtTimKiem.Text);
        }

        private void btnLayDSDNBC_Click(object sender, EventArgs e)
        {
            expandablePanel4.Expanded = true;
        }

        private void cbKhoangTime_CheckedChanged(object sender, EventArgs e)
        {
            if (cbKhoangTime.Checked)
            {
                lbFrom.Text = "Từ Ngày: ";
                lbTo.Visible = true;
                dtiTo.Visible = true;
            }
            else
            {
                lbFrom.Text = "Trong Ngày: ";
                lbTo.Visible = false;
                dtiTo.Visible = false;
            }
        }

        private void txtPage_LostFocus(object sender, EventArgs e)
        {
            GetAll();
        }

        private void txtPage_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                bool isValid = txtPage.Text.All(char.IsDigit);
                if (isValid && txtPage.Text != "")
                {
                    int textchange = Convert.ToInt32(txtPage.Text);
                    int tongtrang = Convert.ToInt32(lbPageTotal.Text);
                    if (textchange > 0 && textchange <= tongtrang)
                    {
                        PagingNumber = PagingSize * (textchange - 1);
                        GetAll();
                    }
                    else if (tongtrang == 1)
                    {
                        MessageBoxEx.Show("Danh sách này chỉ có 1 trang");
                    }
                    else
                    {
                        MessageBoxEx.Show("Vui lòng nhập số trang từ 1 đến " + lbPageTotal.Text);
                    }
                }
                else
                {
                    MessageBoxEx.Show("Vui lòng nhập số trang từ 1 đến " + lbPageTotal.Text);
                }
            }
        }

        private void lbDpre_Click(object sender, EventArgs e)
        {
            PagingNumber = 0;
            GetAll();
        }

        private void lbPre_Click(object sender, EventArgs e)
        {
            int sotranghientai = Convert.ToInt32(txtPage.WatermarkText);
            int tongtrang = Convert.ToInt32(lbPageTotal.Text);
            if (sotranghientai > 1)
            {
                PagingNumber -= PagingSize;
                GetAll();
            }
        }

        private void lbNext_Click(object sender, EventArgs e)
        {
            int sotranghientai = Convert.ToInt32(txtPage.WatermarkText);
            int tongtrang = Convert.ToInt32(lbPageTotal.Text);
            if (sotranghientai < tongtrang)
            {
                PagingNumber += PagingSize;
                GetAll();
            }
        }

        private void lbDnext_Click(object sender, EventArgs e)
        {
            int tongtrang = Convert.ToInt32(lbPageTotal.Text);
            PagingNumber = PagingSize * (tongtrang - 1);
            GetAll();
        }


	}
}
